home *** CD-ROM | disk | FTP | other *** search
- package com.commerceone.util.identity;
-
- import java.util.StringTokenizer;
-
- public class NumberedVersion implements Version {
- private final int m_major;
- private final int m_minor;
- private final String m_label;
-
- public String toString() {
- return this.m_label == null ? "" + this.m_major + "." + this.m_minor : "" + this.m_major + "." + this.m_minor + "(" + this.m_label + ")";
- }
-
- public NumberedVersion(int major, int minor) {
- this.m_major = major;
- this.m_minor = minor;
- this.m_label = null;
- }
-
- public NumberedVersion(int major, int minor, String label) {
- this.m_major = major;
- this.m_minor = minor;
- this.m_label = label;
- }
-
- public boolean sameMajor(Version version) {
- if (!(version instanceof NumberedVersion)) {
- return false;
- } else {
- return this.m_major == ((NumberedVersion)version).m_major;
- }
- }
-
- public static NumberedVersion internalize(byte[] bytes) {
- return new NumberedVersion(bytes[0], bytes[1]);
- }
-
- public static NumberedVersion internalize(String str) {
- int major = 0;
- int minor = 0;
- String label = null;
- StringTokenizer st = new StringTokenizer(str, ".()");
- if (st.hasMoreTokens()) {
- String num_str = st.nextToken();
- major = Integer.parseInt(num_str);
- }
-
- if (st.hasMoreTokens()) {
- String num_str = st.nextToken();
- minor = Integer.parseInt(num_str);
- }
-
- if (st.hasMoreTokens()) {
- label = st.nextToken();
- }
-
- return label == null ? new NumberedVersion(major, minor) : new NumberedVersion(major, minor, label);
- }
-
- public int compareTo(Version version) {
- if (!(version instanceof NumberedVersion)) {
- return -1000;
- } else if (this.m_major < ((NumberedVersion)version).m_major) {
- return -1;
- } else {
- return this.m_major == ((NumberedVersion)version).m_major ? this.m_minor - ((NumberedVersion)version).m_minor : 1;
- }
- }
-
- public boolean equals(Object obj) {
- if (!(obj instanceof NumberedVersion)) {
- return false;
- } else {
- return this.m_major == ((NumberedVersion)obj).m_major && this.m_minor == ((NumberedVersion)obj).m_minor;
- }
- }
-
- public byte[] toBytes() {
- byte[] bytes = new byte[]{(byte)this.m_major, (byte)this.m_minor};
- return bytes;
- }
-
- public boolean isPreliminary() {
- return this.m_label != null;
- }
- }
-